package string;

/**
 * 判断给出的字符串是否可以通过它的子字符串进行多次重复组成
 * 比如 abcabc 是通过abc重复两次得到的  ababab是通过ab重复三次得到的，这样的返回true，但是aba这样的就返回false
 */
public class StringTest {

    public boolean fun1(String str){
        if(str==null || str.equals("")|| str.length()<=1){
            return false;
        }
        String temp = "";//子串
        //子串至少是源字符串的1/2，否则不存在，只需要判断源串的1/2即可
        for(int i=0;i<str.length()/2+1;i++){
            temp = str.substring(0,i+1);
            if(str.length()%temp.length()!=0){
                continue; //不能平均划分字符串，跳出循环
            }
            boolean yy = fun2(str, temp);
            if(yy){
                return yy;//如果已存在，直接返回，否则继续循环
            }
        }
        return false;//如果没有，最终返回false
    }

    public boolean fun2(String str,String temp){
        int count = str.length() / temp.length();
        for (int i = 0; i < count; i++) {
            String substring = str.substring(i*temp.length(), (i+1) * temp.length());
            if (!substring.equals(temp)) {

                return false;
            }
        }
        return true;
    }
}
